package com.huzz.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.alibaba.fastjson.JSONObject;
import com.huzz.entity.LoginModel;
import com.huzz.model.RegisterModel;
import com.huzz.util.body.DataBox;

import java.util.List;

/**
 * @Name 名称
 * @Description 描述
 * @Author 童年的纸飞机
 * @Since 2023-04-2023/4/25 16:23
 */
public interface SaTokenService {

    /**
     * 登录
     *
     * @param loginModel
     * @return
     */
    DataBox<Object> login(LoginModel loginModel);

    /**
     * 查询登录状态
     *
     * @return
     */
    DataBox<String> isLogin();

    /**
     * 注销登录
     * @return
     */
    void logout();

    /**
     * 获取当前会话的Token信息
     *
     * @return
     */
    SaTokenInfo getTokenInfo();

    /**
     * 获取当前账号所有权限
     * @return
     */
    List<String> getPermissionList();

    /**
     * 获取当前账号所有角色
     * @return
     */
    List<String> getRoleList();

    /**
     * 强制注销
     *
     * @param value
     * @param time
     * @param type
     * @return
     */
    String coerceLogout(String value, Long time, String type);

    /**
     * 获取封号剩余时间
     * @param loginId
     * @return
     */
    String getDisableTime(Integer loginId);

    /**
     * 二级认证
     * @param service
     * @param secondPassword
     * @return
     */
    DataBox<String> openSafe(String service, String secondPassword);

    /**
     * 注册
     * @param registerModel
     * @return
     */
    DataBox<String> register(RegisterModel registerModel);

    /**
     * 获取当前用户角色/权限/菜单列表
     * @return
     */
    JSONObject getCurrentUserInfo();

    /**
     * untieDisable
     *
     * @param loginId
     */
    void untieDisable(Integer loginId);
}
